package com.rui.patterns.singleton.demo04;
/**
 * @className    : Singleton
 * @author       : [锐神NO.3]
 * @version      : [v1.0]
 * @createTime   : [2022/2/9 11:35]
 * @description  : [懒汉式单例模式 ： 双重检查锁方式]
 */
 
public class Singleton {

    /**
     * 私有构造器
     */
    private Singleton() {
    }

    /**
     * 声明Singleton 类型的变量
     */
    private static volatile Singleton instance;

    /**
     * 对外提供获取实例的方法
     * @return Singleton 实例
     */
    public static Singleton getInstance() {
        if (instance == null) {
            // 双重检查锁
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
